import getLastEvent from "./utils/getLastEvent";

// 长任务 监控
export function longTask() {
  new PerformanceObserver((list) => {
    list.getEntries().forEach((entry) => {
      if (entry.duration > config.longTaskTime) {
        let lastEvent = getLastEvent();
        //   equestIdleCallback是一个用于在浏览器空闲时执行回调函数的API，我们可以使用它来检测是否存在长任务。通过在回调函数中执行一段耗时较长的代码，并设置一个时间阈值，如果超过阈值，则认为存在长任务。
        requestIdleCallback(() => {
          tracker.send({
            kind: "experience",
            type: "longTask",
            eventType: lastEvent?.type,
            startTime: entry.startTime,
            duration: entry.duration,
            selector: lastEvent
              ? getSelector(lastEvent.path || lastEvent.target)
              : "",
          });
        });
      }
    });
  }).observe({ entryTypes: ["longtask"] });
}
